unity Android 的文件操作

您所在的位置:网站首页 unity 应用程序路径不存在 unity Android 的文件操作

unity Android 的文件操作

2024-07-03 11:46| 来源: 网络整理| 查看: 265

Unity windows环境下 存在Assets/StreamingAssets目录下的文件可以直接使用路径:

path= Application.streamingAssetsPath + "/" + fileName;

进行读写操作。但是在Android的环境中Assets/StreamingAssets目录下的文件只能进行读取的操作。

Android的环境中使用路径:

path = Application.persistentDataPath + "/" + fileName;

Application.persistentDataPath (可持久化的目录)路径中的文件可以使用windows环境的文件读写操作(文件流FileStream读写和File类的读写)

创建

public void CreateFileInPersistentData(string fileName) { string path = Application.persistentDataPath + "/" + fileName; if (File.Exists(path)) { return;//存在该文件 } else { //文件不存在 FileStream fs = new FileStream(path, FileMode.Create); fs.Close(); } }

写入

public void WriteTXT(string fileName, string s)//写入String { string url = null; if (Application.platform == RuntimePlatform.Android) { url = Application.persistentDataPath + "/" + fileName; File.WriteAllText(url, s); } else if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer) { url = Application.persistentDataPath + "/" + fileName; FileStream fs = new FileStream(url, FileMode.Create); byte[] bytes = new UTF8Encoding().GetBytes(s.ToString()); fs.Write(bytes, 0, bytes.Length); fs.Close(); } }

写入数组

public static void WriteTXT(string fileName, List lines)//写入数组 { string url = null; url = Application.persistentDataPath + "/" + fileName; File.WriteAllLines(url, lines.ToArray()); }

读入

public string LoadTXTtoString(string fileName) { string url = Application.persistentDataPath + "/" + fileName; string s = null; if (Application.platform == RuntimePlatform.Android) { s = File.ReadAllText(url); } else if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer) { FileStream fs = new FileStream(url, FileMode.Open); byte[] bytes = new byte[100]; fs.Read(bytes, 0, bytes.Length); //将读取到的二进制转换成字符串 s = new UTF8Encoding().GetString(bytes); fs.Close(); } return s; }

读入数组

public List LoadTXTtolist(string fileName) { string url = Application.persistentDataPath + "/" + fileName; List lines = new List(File.ReadAllLines(url)); return lines; }

追加

public void AppendTXT(string fileName, string s)//写入String { string url = Application.persistentDataPath + "/" + fileName; FileStream fs = new FileStream(url, FileMode.Append); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(s); sw.Close(); fs.Close(); }

 

如需在Android环境下读写Assets/StreamingAssets的文件,一个解决办法是将Assets/StreamingAssets目录下的文件复制到Application.persistentDataPath 目录下,之后对复制后 的文件进行操作。

​ public void CopyFileFromStreamingAsset(string fileName) { string from_path= Application.streamingAssetsPath + "/" + fileName; string to_path = Application.persistentDataPath + "/" + fileName; WWW www = new WWW(from_path); while (!www.isDone) { } if (www.error == null) { File.WriteAllBytes(to_path, www.bytes); } }​

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3